#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//	FILE* pf1 = fopen("data1.txt", "w");
//	if (pf1 == NULL)
//	{
//		perror("fopen1");
//		return 1;
//	}
//	FILE* pf2 = fopen("data2.txt", "w");
//	if (pf2 == NULL)
//	{
//		perror("fopen2");
//		return 1;
//	}
//	char ch = 'A';
//	for (ch = 'A'; ch <= 'z'; ch++)
//	{
//		fputc(ch, pf1);
//	}
//	char arr[5] = { 0 };
//	while (fread(arr, sizeof(arr[0]), 5, pf1) <= 5)
//	{
//		fputs(arr, pf2);
//	}
//	fclose(pf1);
//	pf1 = NULL;
//	fclose(pf2);
//	pf2 = NULL;
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	FILE* pfread = fopen("data1.txt", "r");
//	if (pfread == NULL)
//	{
//		perror("fopen1");
//		return 1;
//	}
//	FILE* pfwrite = fopen("data2.txt", "w");
//	if (pfwrite == NULL)
//	{
//		fclose(pfread);
//		pfread = NULL;
//		perror("fopen2");
//		return 1;
//	}
//	int ch = 0;///////////////////////////////////////////////////////////////////
//	while ((ch = fgetc(pfread)) != EOF)
//	{
//		fputc(ch, pfwrite);
//	}
//	fclose(pfread);
//	pfread = NULL;
//	fclose(pfwrite);
//	pfwrite = NULL;
//	return 0;
//}
//
//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int d = 0;
//	int e = 0;
//	for (a = 1; a <= 5; a++)
//	{
//		for (b = 1; b <= 5; b++)
//		{
//			for (c = 1; c <= 5; c++)
//			{
//				for (d = 1; d <= 5; d++)
//				{
//					for (e = 1; e <= 5; e++)
//					{
//						if (((b == 2) + (a == 3) == 1) &&
//							((b == 2) + (e == 4) == 1) &&
//							((c == 1) + (d == 2) == 1) &&
//							((c == 5) + (d == 3) == 1) &&
//							((e == 4) + (a == 1) == 1))
//						{
//							if (a * b * c * d * e == 120)
//								printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);
//						}
//					}
//				}
//			}
//		}
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int arr[50][50] = { 0 };
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < 50; i++)
//	{
//		for (j = 0; j < 50; j++)
//		{
//			if (i == j)
//				arr[i][j] = 1;
//			else if (j == 0)
//				arr[i][j] = 1;
//			else
//			{
//				arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
//			}
//		}
//	}
//	int n = 0;
//	scanf("%d", &n);
//	for (i = 0; i < n; i++)
//	{
//		for (j = 0; j < n; j++)
//		{
//			if(i>=j)
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//#include<stdio.h>
//#include<stdlib.h>
//#include<string.h>
//int main()
//{
//	int* pa = (int*)malloc(sizeof(int) * 10);
//	memset(pa, 2, 10);
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", pa[i]);
//	}
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//struct S
//{
//	char name[10];
//	int age;
//	char id[10];
//};
//int main()
//{
//	int arr1[10] = { 0 };
//	int arr2[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	memcpy(arr1, arr2, sizeof(int) * 10);
//	struct S s = { "zhangsan",19, "2022250921" };
//	struct S s1;
//	memcpy(&s1, &s, sizeof(s));
//	//memcpy()
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//void my_memcpy(void* des, void* src, size_t size)
//{
//	int i = 0;
//	for (i = 0; i < size; i++)
//	{
//		*(char*)des = *(char*)src;
//		des = (char*)des + 1;
//		src = (char*)src + 1;
//	}
//}
//struct S
//{
//	char c;
//	int d;
//	float f;
//};
//int main()
//{
//	/*int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	memcpy(arr2, arr1, sizeof(int) * 10);
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d ", arr2[i]);
//	}*/
//	struct S s = { 'w', 100,3.14f };
//	struct S tmp;
//	my_memcpy(&tmp, &s, sizeof(struct S));
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//void my_memcpy(void* dest, const void* sour, size_t size)
//{
//	assert(dest && sour);
//	while (size--)
//	{
//		*(char*)dest = *(char*)sour;
//		dest = (char*)dest + 1;
//		sour = (char*)sour + 1;
//	}
//}
//struct S
//{
//	float f;
//	int i;
//	char c;
//};
//
//int main()
//{
//	struct S s = { 3.14f, 100, 'w' };
//	struct S tmp;
//	my_memcpy(&tmp, &s, sizeof(struct S));
//	return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//void*my_memcpy(void* dest, const void* sour, size_t size)
//{
//	assert(dest && sour);
//	void* ret = dest;
//	if (dest < sour)
//	{
//		while (size--)
//		{
//			*(char*)dest = *(char*)sour;
//			dest = (char*)dest + 1;
//			sour = (char*)sour + 1;
//		}
//	}
//	else
//	{
//		while (size--)
//		{
//			*((char*)dest + size) = *((char*)sour + size);
//		}
//	}
//	return ret;
//}
//int main()
//{
//	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	//memmove(arr1 + 2, arr1, 20);
//	my_memcpy(arr1 + 2, arr1, 20);
//	return 0;
//}


//#include<stdio.h>
//#include<assert.h>
//void* my_memcpy(void* dest, const void* sour, size_t sz)
//{
//	assert(dest && sour);
//	void* ret = dest;
//	while (sz--)
//	{
//		*(char*)dest = *(char*)sour;
//		dest = (char*)dest + 1;
//		sour = (char*)sour + 1;
//	}
//	return ret;
//}
//int main()
//{
//	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int arr2[10] = { 0 };
//	my_memcpy(arr2, arr1, 40);
//}

//#include<stdio.h>
//#include<stdlib.h>
//int main()
//{
//	int* arr = (int*)malloc(0);
//	for (int i = 0; i < 5; i++)
//	{
//		arr[i] = 1 + i;
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	file* pf = fopen("data.txt", "w");
//	if (pf == null)
//	{
//		perror("fopen");
//		return 1;
//	}
//	char ch = 'a';
//	for (ch = 'a'; ch <= 'z'; ch++)
//	{
//		fputc(ch, pf);
//	}
//	printf("\n%c\n", ch);
//	fclose(pf);
//	pf = fopen("data.txt", "r");
//	int num = 0;
//	//fseek(pf, 0, seek_set);
//	while (fgetc(pf) != eof)
//	{
//		//printf("%c", ch);
//		num++;
//	}
//	printf("%d\n", num);
//	return 0;
//}


